![【レポート】「1年半運用してわかった!BLUE PROTOCOLにおけるビルドパイプラインのクラウド化の壁」#CEDEC2021 #classmethod_game](https://devio2023-media.developers.io/wp-content/uploads/2021/08/cedec-eyecatch.png)
【レポート】「1年半運用してわかった!BLUE PROTOCOLにおけるビルドパイプラインのクラウド化の壁」#CEDEC2021 #classmethod_game
こんにちは、コンサルティング部の後藤です。
8月24日 - 8月26日の3日間開催されているCEDEC2021に参加しています。今回はその中からバンダイナムコスタジオ様のセッション「1年半運用してわかった!BLUE PROTOCOLにおけるビルドパイプラインのクラウド化の壁」を聴講してきました。
バンダイナムコスタジオ様のBLUE PROTOCOLのビルドパイプラインといえば、去年のAWS Summit 2020でも紹介されており、その後の1年半の運用で視えてきた課題等が私自身興味があったため、レポートを書かせて頂きます。
AWS Summit 2020のセッションレポートは以下になります。
【レポート】バンダイナムコスタジオ様事例セッション「クラウドを使ったゲーム開発の効率化(ゲーム開発パイプラインのクラウド化)」 #AWSSummit
セッション情報
タイトル
1年半運用してわかった!BLUE PROTOCOLにおけるビルドパイプラインのクラウド化の壁
スピーカー
株式会社バンダイナムコスタジオ 技術スタジオ 技術スタジオ付 エグゼクティブテクニカルディレクター大井 隆義 氏
株式会社バンダイナムコスタジオ コーポレート統括本部コーポレート本部総務ITサービス部ITサービス企画課ITサービス企画チーム吉田 卓哉 氏
概要
ゲーム品質の高度化に伴う開発期間の長期化やゲームエンジンでのビルド時間増加の現状に、BLUE PROTOCOLでは比較的先行して、ビルドパイプラインのクラウド化を行いました。昨年行われたAWS Summit2020では、どのように行ったかを紹介させていただきました。 本セッションでは、視聴されていない方の為にAWS Summit2020の発表内容の概要と、構築から一年以上運用して出た課題や知見について発表します。
セッションレポート
本セッションのゲームタイトル
本セッションの事例で挙げられているタイトルはバンダイナムコスタジオ様で開発中の「BLUE PROTOCOL」となります。
アニメーション描写のようなグラフィックが魅力的で、正式リリースが非常に待ち遠しいタイトルです。
AWS Summit 2020に紹介した内容の振り返り
・ゲーム開発環境のクラウド化する際の悩み
開発者側でゲーム開発環境を全てクラウド化の要望を出しても、以下のような課題から実現が困難です。
- ゲーム開発環境がそもそも社内LAN前提で構築がされている
- 社外から社内のユーザ認証基盤やファイルサーバ、VCSにアクセスできない
- ネットワークスピード、トラフィック、レイテンシが思うように発揮できない
- ゲーム開発では大量のソースコードやアセットデータを取り扱い、ダウンロードの時間が掛かる
- ゲーム開発環境をクラウド化しても、自宅環境によって4K、60FPSの描写が出来ない
- 契約関連
- ゲーム開発に使用するエンジン、ミドルウェア等の開発ツールがクラウド上で利用出来ない
そのため、バンダイナムコスタジオ様では可能な範囲からクラウド化を実現させる方針で動き、その取っ掛かりとしてBLUE PROTOCOLのビルドパイプラインのクラウド化を行った。
クラウド化を行う前のビルドパイプライン環境
- 社内でビルドマシンを管理。Jenkinsをビルドに利用。
- アセットデータやソースコードはPerforceで管理。
- Jenkinsは最新データをPerforceから取得。
- 成果物をストレージに格納。
ビルドにはIncrediBuildを利用して、150コアによる並列分散ビルドを実現。
クラウド化を行う前のビルドパイプライン環境での悩みとして、以下のようなことを挙げられていました。
- ビルドマシンの調達に数週間程、時間が掛かる
- ビルドマシンのセットアップに時間が掛かる
- ビルドツールの導入や、Jenkinsのジョブ設定
- ビルドマシンの運用負荷が高い
- 設置スペースや電源の確保、停電や故障時の対応が必要
- Jenkinsのトラブル対応
クラウド化したビルドパイプライン環境
- AWSを活用して、AWS上にビルドマシンやPerforce、成果物を格納するストレージ(S3)を構築
- AWS上のPerforceはProxyとなっており、社内のPerforceから最新データを取得
- ビルドインスタンスにIncrediBuildは活用せず、96コアを塔載したc5.24xlargeを活用
- 数百GBあるデータを持ち続けるため、ビルドマシンの削除は行わず停止、起動を繰り返している
Jenkinsからビルドインスタンスに対してビルドを実行する流れは以下の通りです。
Jenkinsの設定を簡素化するため、CLIやSSMを使用してビルドインスタンスに対する操作や状態管理を行っているとのこと。
クラウド化を行った後のビルド時間も比較されており、非常に参考になります。各処理によって早い遅いありますが、最終的な合計時間は短くなっている事がわかります。
また、バンダイナムコスタジオ様の環境におけるランニングコストを開示されております。開発中のゲームやビルド時間でこの結果は大きく変わると思いますが、こちらも非常に参考になります。
クラウド化を行ったことにより、ビルドマシンの調達が数週間から数分になった事、ネット上でのナレッジも増えている事がメリットとして挙げられています。一方、従量課金制のため稼働時間が長くなった際の費用や、コスト試算の難しさがデメリットとして挙げられていました。
ここまでが1年半前にAWS Summit 2020で紹介されていた内容となります。ここから1年半運用してきた中で感じた壁を紹介されていました。
現在のビルドパイプラインの状況について
- 近年の社会情勢により、リモートワークの開発者増加
- 1年半でアセット数が膨大したことによるビルド時間の増加
- 全体約2.1時間が約3.3時間に増加。主にクック処理の時間が増えた
- ビルドインスタンスが持つストレージ(EBS)の容量増加
- EBSの費用はインスタンスを停止していても発生する
- 合計で25TBあり、毎月約$3,000発生
1年半運用してきた中で挙がった課題
- ビルドインスタンスの進捗が把握し辛い問題について
- 今までSSMを使用してビルド状況を把握していたが、長時間ビルドの状況把握が困難
- ビルドインスタンスをJenkins Slaveにすることで状況把握を行う
- Slave化する事で、標準出力の内容が増えてビルド状況の把握が容易になった
- 今までSSMを使用してビルド状況を把握していたが、長時間ビルドの状況把握が困難
- AWSと社内のJenkins連携について
- AWS上のJenkins処理が終了すると社内のJenkinsが動く仕組みを作りたい
- Jenkins Plugin「Slack notification」、Slackアプリ「Jenkins CI」を使用して実装
- 在宅リモートワークによるダウンロード時間について
- 社内のファイルサーバに接続するのにVPNが必要
- VPN接続を行うため、回線帯域があっても速度がそこまで出ない
- 成果物をS3に設置しているため、S3から直接ダウンロードする仕組みを検討
- セキュアにダウンロードするため、IAMのアクセスキーを活用
- S3に対するリストを禁止にして、必要なファイルパス等の一覧は社内のファイルサーバで管理
- ファイルリストにはPATHとハッシュ値が記載されている
- ハッシュ値不一致であれば更新があるためダウンロードする仕組み
- AWS SDK for Python(boto3)で実装
- 15分掛かっていたダウンロードが2分に短縮
- データ転送は毎日1人1ドル程度のため軽微
- 社内のファイルサーバに接続するのにVPNが必要
- インスタンスに対するリモートデスクトップについて
- 新規に構築したJenkinsやビルドインスタンスに接続したいが、台数が多いとログイン情報の管理が煩雑になる
- RD Gatewayを活用してHTTPSでインスタンスに接続
- 新規に構築したJenkinsやビルドインスタンスに接続したいが、台数が多いとログイン情報の管理が煩雑になる
- 停止中インスタンスのEBSについて
- gp2からgp3に切り替えた事により、コストを20%程削減
- ビルドインスタンスのワーカー化を行い、共有ストレージ化等を検討中
- まだ実現には至っていないため、根本的な解決は行えず。
- 複数環境でのJenkinsアカウント管理について
- Amazon Cognito , OpenID Connect , Jenkins Plugin「OpenID Connect Atuentication」を活用した何かを検討中
- まだ実現には至っていないため、根本的な解決は行えず。
- Amazon Cognito , OpenID Connect , Jenkins Plugin「OpenID Connect Atuentication」を活用した何かを検討中
- ハイスペックインスタンスの動作していないCPUについて
- コンパイル時はCPUを100%活用できるが、クックやパッケージングではそこまで利用出来ていない
- IncrediBuild Cloudを活用出来ないか検討中。
- まだ実現には至っていないため、根本的な解決は行えず。
クラウド化によるメリットはあるものの、問題はまだ残っているため今後も改善が続くとのこと。
最後に
以上バンダイナムコスタジオ様セッション「1年半運用してわかった!BLUE PROTOCOLにおけるビルドパイプラインのクラウド化の壁」のレポートとなります。私もゲーム開発環境のクラウド化について勉強中ですが、運用してみないと視えてこない課題はやはりあると思います。本セッションではそれらに対してバンダイナムコスタジオ様が実践している改善策を詳しく紹介されていて、非常に参考になるセッションとなっていました。今後もバンダイナムコスタジオ様のゲーム開発環境のクラウド化には注目していきたいです。